
% Первая глава работы 
\chapter{Network Address Translation}
\label{chap1}

\section{Как работает NAT}
\label{chap1:sec1}
NAT необходим в случае, если количество выданных провайдером IP--адресов меньше, чем количество компьютеров, которым необходимо обеспечить доступ к Интернету.  NAT позволяет использовать зарезервированные блоки адресов, описанные в Address Allocation for Private Internets (RFC 1918):
\begin{verbatim}
	10.0.0.0/8       (10.0.0.0 - 10.255.255.255)
	172.16.0.0/12    (172.16.0.0 - 172.31.255.255)
	192.168.0.0/16   (192.168.0.0 - 192.168.255.255)
\end{verbatim}
Когда клиент из внутренней сети связывается с машиной в Интернете, он посылает IP--пакеты, предназначенные этой машине. Эти пакеты содержат всю необходимую информацию об адресате. NAT работает со следующими данными: 
\begin{itemize}
\item Исходный IP--адрес (например, 192.168.1.35) 
\item Исходный TCP-- или UDP--порт (например, 2132) 
\end{itemize}
Когда пакеты проходят через NAT--шлюз, они изменяются таким образом, что адресатам этих пакетов кажется, будто они исходят от самого шлюза. NAT--шлюз будет записывать преобразования, которые он производит с пакетом, в таблицу состояний. Это позволяет ему производить следующие операции: (http://www.openbsd.org/faq/pf/nat.html)
\begin{itemize}
\item Обратное преобразование ответных пакетов.
\item Проверка прохождения ответных пакетов через брандмауэр.
\end{itemize}
Например, могут быть внесены следующие изменения:
\begin{itemize}
\item Замена IP отправителя на внешний адрес шлюза. 
\item Замена порта отправителя случайно выбранным неиспользуемым портом шлюза.
\end{itemize}

Ни отправитель, ни получатель не знают об этих преобразованиях. Для внутренней машины NAT--система выглядит как Интернет--шлюз. С точки зрения хоста, который не знает о существовании внутренней машины, пакеты приходят непосредственно от NAT--системы. Когда хост отвечает внутренней машине, пакеты направляются на IP--адрес NAT--шлюза, на указанный в пакете порт. Чтобы определить принадлежность ответных пакетов одному из установленных соединений, NAT--шлюз просматривает таблицу состояний. Соответствие определяется на основе комбинации <<IP--адрес получателя исходного пакета / порт>>, которая сообщает шлюзу о том, что пакеты принадлежат соединению, инициированному той или иной машиной. Шлюз производит обратное преобразование и отправляет ответные пакеты внутренней машине. 

\section{Преимущества и недостатки}
\label{chap1:sec2}
\textbf{Преимущества}

NAT выполняет три важных функции:
\begin{enumerate}
\item Экономит IP--адреса, транслируя несколько внутренних IP--адресов в один внешний публичный IP--адрес. По такому принципу построено большинство сетей в мире: на небольшой район домашней сети местного провайдера выделяется 1 внешний IP--адрес, под которым работают и получают доступ к Интернету все внутренние IP--адреса.
\item Позволяет предотвратить или ограничить обращение внешних хостов к внутренним, а также вести контроль и учет обращения внутренних к внешним. При инициации соединения изнутри сети происходит трансляция. Ответные пакеты, поступающие снаружи, соответствуют произведенной трансляции и пропускаются внутрь. Если для пакетов, поступающих снаружи, соответствующей записи в таблице трансляций не существует, они не пропускаются.
\item Дает возможность скрывать определённые внутренние сервисы. По сути, выполняется та же указанная выше трансляция на определённый порт, но при этом существует возможность подменить внутренний порт официально зарегистрированной службы (например, 80-ый порт TCP, на котором работает HTTP--сервер, на 54055-ый). Тем самым, снаружи по внешнему IP--адресу на сайт, работающий на упомянутом HTTP--сервере, можно будет попасть только по адресу http://mysite.org:54055, а внутренние машины, находящиеся за NAT, смогут получить доступ по обычному 80-му порту.
\end{enumerate}

\textbf{Недостатки}

При использовании NAT хосты Internet взаимодействуют напрямую с NAT--устройством, а не с реальным хостом в частной сети. Входящие пакеты передаются по IP--адресу устройства NAT, а устройство меняет адрес назначения в заголовке пакета со своего собственного Internet -- адреса на адрес частной сети реального хоста назначения.
В результате --- теоретически --- единый уникальный в глобальном масштабе IP--адрес может скрывать за собой сотни, тысячи или даже миллионы хостов, чьи адреса определены в частной сети. На практике, однако, такой подход имеет ряд недостатков. Например, многие Internet--протоколы и приложения существенно опираются на тот факт, что сеть в действительности поддерживает соединение из конца в конец, когда пакеты передаются без каких--либо изменений от отправителя получателю. Архитектура IP--защиты не может поддерживать работу через устройство NAT, поскольку оригинальные заголовки, в которых указаны исходные IP--адреса отправителей, защищены с помощью цифровой подписи. При изменении исходного адреса цифровая подпись потеряет свою целостность.

\begin{enumerate}
\item Не все протоколы могут «преодолеть» NAT. Некоторые не в состоянии работать, если на пути между взаимодействующими хостами происходит трансляция адресов. Некоторые межсетевые экраны, осуществляющие трансляцию IP--адресов, могут исправить этот недостаток, соответствующим образом заменяя IP--адреса не только в заголовках IP, но и на более высоких уровнях.
\item Из--за трансляции адресов «много в один» появляются дополнительные сложности с идентификацией пользователей и необходимость хранить полные логи трансляций.
\item Если NAT используется для подключения многих пользователей к одному и тому же сервису, это может вызвать иллюзию DoS атаки на сервис (множество успешных и неуспешных попыток). Например, избыточное количество пользователей ICQ за NAT’ом приводит к проблеме с подключением к серверу у некоторых пользователей из-за превышения допустимой частоты соединений на один IP--адрес. Частичным решением проблемы является использование группы адресов, каждый из которых указывает на NAT--шлюз.
\item В некототорых случаях появляется необходимость в дополнительной настройке при работе с пиринговыми сетями и некоторыми другими программами, в которых необходимо не только инициировать исходящие соединения, но также принимать входящие.
\end{enumerate}
\cite{lit7}

\section{Типы маршрутизаторов NAT}
\label{chap1:sec3}
~~~~
\textbf{Cone NAT}
Внутренний адрес (192.168.0.2:2210) проецируются на внешний адрес (1.1.1.2:8801). Любой пакет посланный с 192.168.0.2:2210 будет послан через 1.1.1.2:8801. Любой пакет с внешнего хоста, посланный на адрес 1.1.1.2:8801 будет отправлен на 192.168.0.2:2210
\begin{figure}[!h!]
 \centerline{\includegraphics[width=0.7\textwidth]{ConeNATrouter}}
 \caption{Cone NAT}
\label{fig1}
\end{figure}

\textbf{Address--Restricted cone NAT}, также называемый просто \textbf{Restricted cone NAT}.
Внутренний адрес (192.168.0.2:2210) проецируются на внешний адрес (1.1.1.2:8801). Любой пакет посланный с 192.168.0.2:2210 будет послан через 1.1.1.2:8801. Пакет с любого порта внешнего хоста, посланный на адрес 1.1.1.2:8801 будет отправлен на 192.168.0.2:2210 только в случае, если 192.168.0.2:2210 предварительно посылал пакет на этот внешний хост.
\begin{figure}[!h!]
 \centerline{\includegraphics[width=0.7\textwidth]{RestrictedConeNATRouter}}
 \caption{Address--Restricted cone NAT}
\label{fig2}
\end{figure}

\textbf{Port--Restricted cone NAT}
Внутренний адрес (192.168.0.2:2210) проецируются на внешний адрес (1.1.1.2:8801). Любой пакет посланный с 192.168.0.2:2210 будет послан через 1.1.1.2:8801. Внешний хост (1.1.1.30:1234) модет послать пакет на 192.168.0.2:2210 через 1.1.1.2:8801 только в случае если ранее 192.168.0.2:2210 слал пакет на 1.1.1.30:1234 (совпадение порта имеет значение)
\begin{figure}[!h!]
 \centerline{\includegraphics[width=0.7\textwidth]{Restricted}}
 \caption{Port--Restricted cone NAT}
\label{fig3}
\end{figure}

\textbf{Symmetric NAT}
Каждый пакет с определенного внутреннего адреса:порта на определенный внешний адрес:порт будет иметь после трансляции уникальный внешний адрес:порт. Соответственно, пакет с одного и того же внутреннего адреса:порта, но посланный на другой внешний хост или порт после трансляции будет иметь другой внешний адрес:порт. Внешние хосты могут послать обратный пакет только на те хосты:порты, откуда они получили пакеты.
\begin{figure}[!h!]
 \centerline{\includegraphics[width=0.7\textwidth]{xdffdf}}
 \caption{Symmetric NAT}
\label{fig4}
\end{figure}
\cite{lit4}






%%% Local Variables:
%%% mode: latex
%%% coding: utf-8-unix
%%% TeX-master: "../default"
%%% End:
